C++类和对象 新手学习问题小结(一)

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:关于函数设置默认参数的情况。

首先看下面这段代码:

#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运算符来释放。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值