C++类和对象 新手学习问题小结(一)
2012-09-18 16:19
232 查看
c++类与对象(1)F&A
Q1:定义或说明对象时,系统会自动调用构造函数为创建的对象初始化。如果类中没有定义任何构造函数时,就无法给定义的对象初始化。
这句话是错误的。如果没有定义任何构造函数的时候,系统会调用默认构造函数。
这里我的疑问是:什么是默认构造函数呢?查到了下面的解释:
http://blog.csdn.net/gengshenghong/article/details/5597681
里面有一条规则是:
若programer没有提供任何构造函数,则C++提供一个默认的构造函数,该默认构造函数是无参构造函数,它仅负责创建对象,不做任何初始化的工作;
这条规则能初步解决我的疑惑。具体规则请看链接。
Q2:可以把一个一般函数说明为某类的友元函数,也可以将某类的成员函数说明为另类的友元函数。
这句话是错误的。错误内容:
http://www.cppblog.com/twzheng/articles/21020.html
Q3:静态成员都是用static来说明的
这句话是对的。
参考博客:
http://blog.csdn.net/xinhuo1125/article/details/1565978
Q4:关于函数设置默认参数的情况。
首先看下面这段代码:
如果再加个同名的成员函数
“Da::Cal”: 对重载函数的调用不明确
自己又在纯c环境下测试了一下,原来默认参数不是C++特有的,在c语言里面是同样存在的。
c++类与对象(2)F&A
1.定义对象指针时也要调用构造函数。
这句话是错误的。定义对象指针的时候不需要调用构造函数。
那么什么时候需要调用构造函数呢?
根据自己的理解,构造函数是创建对象的时候需要调用构造函数。
定义指针对象 的时候有没有创建对象呢?明显没有嘛。
自己实践了一下,真的没有调用构造函数。
2.对象指针可用同类对象的地址值给它赋值。
仔细推敲一下这句话,是基本概念。这句话是对的。
3.对象引用可以用一个同类对象的地址值对它赋值。
对象引用跟对象指针不同。如果是对象指针的话这句话就对了。
引用不是一种数据类型,引用不能赋地址值。
4.定义对象引用时,可以对其引用进行初始化,也可以不进行初始化。
这句话答案是错误的。但是自己刚才调试了一下,发现貌似可以不进行初始化的。
这一条暂时先留着。这个陈述句不是很明确。
5.给对象数组元素赋值时都要创建临时对象。
6.任何对象都可以使用delete运算符来释放。
Q1:定义或说明对象时,系统会自动调用构造函数为创建的对象初始化。如果类中没有定义任何构造函数时,就无法给定义的对象初始化。
这句话是错误的。如果没有定义任何构造函数的时候,系统会调用默认构造函数。
这里我的疑问是:什么是默认构造函数呢?查到了下面的解释:
http://blog.csdn.net/gengshenghong/article/details/5597681
里面有一条规则是:
若programer没有提供任何构造函数,则C++提供一个默认的构造函数,该默认构造函数是无参构造函数,它仅负责创建对象,不做任何初始化的工作;
这条规则能初步解决我的疑惑。具体规则请看链接。
Q2:可以把一个一般函数说明为某类的友元函数,也可以将某类的成员函数说明为另类的友元函数。
这句话是错误的。错误内容:
http://www.cppblog.com/twzheng/articles/21020.html
Q3:静态成员都是用static来说明的
这句话是对的。
参考博客:
http://blog.csdn.net/xinhuo1125/article/details/1565978
Q4:关于函数设置默认参数的情况。
首先看下面这段代码:
#include <iostream> using namespace std; class Da { public: Da() { printf("This is Gouzao Function\n"); } void Cal(int x, int y = 0, int z = 0) { printf("This is Cal Function\n"); } private: int a; int b; }; int main() { Da a; a.Cal(2); return 0; }Cal函数是有三个参数的。但是我在传递的的时候只传递了1个参数,编译也能通过。这是因为 y 和 z 都是默认参数。
如果再加个同名的成员函数
void Cal(int x) { printf("This is Cal Function\n"); }这样编译就会报错误:
“Da::Cal”: 对重载函数的调用不明确
自己又在纯c环境下测试了一下,原来默认参数不是C++特有的,在c语言里面是同样存在的。
c++类与对象(2)F&A
1.定义对象指针时也要调用构造函数。
这句话是错误的。定义对象指针的时候不需要调用构造函数。
那么什么时候需要调用构造函数呢?
根据自己的理解,构造函数是创建对象的时候需要调用构造函数。
定义指针对象 的时候有没有创建对象呢?明显没有嘛。
自己实践了一下,真的没有调用构造函数。
2.对象指针可用同类对象的地址值给它赋值。
仔细推敲一下这句话,是基本概念。这句话是对的。
3.对象引用可以用一个同类对象的地址值对它赋值。
对象引用跟对象指针不同。如果是对象指针的话这句话就对了。
引用不是一种数据类型,引用不能赋地址值。
4.定义对象引用时,可以对其引用进行初始化,也可以不进行初始化。
这句话答案是错误的。但是自己刚才调试了一下,发现貌似可以不进行初始化的。
这一条暂时先留着。这个陈述句不是很明确。
5.给对象数组元素赋值时都要创建临时对象。
6.任何对象都可以使用delete运算符来释放。
相关文章推荐
- mybatis快速入门学习教程新手注意问题小结
- 0024 Java学习笔记-面向对象-包装类、对象的比较、String常量池问题
- jquery 新手学习常见问题解决方法
- 关于JavaScript的面向对象和继承有利新手学习
- 关于部分新手用笔记本学习Linux时按下ctrl+alt+F1~F6没反应的问题
- 【js学习之路】事件绑定函数中,将this换成调用对象导致的问题
- 问题小结(20)--AIDL学习及使用
- 每天一篇javascript学习小结(Date对象)
- 我的Java开发学习之旅------>Java String对象作为参数传递的问题解惑
- 模块化C代码与UML对象模型之间的映射(4)——常见问题小结
- selenium 学习笔记 ---新手学习记录(4) 问题总结(java)-autoit3脚本使用
- 乱码编码问题学习小结(包括Java)
- 新手学习之Exchange2007,问题记录
- c++ 学习之路 第一天 C++类和对象,命名空间,标准库和std命名空间
- selenium 学习笔记 ---新手学习记录(5) 问题总结(java)
- Java面向对象学习阶段小结
- C#学习小结之对象和类
- JavaScript事件学习小结(三)js事件对象
- c++类定义体中定义继承树中类的对象问题
- C++类对象成员变量和成员函数内存分配的问题