这是第一段代码
class a
{
private:
int i,j;
};
void main(void)
{
a *p;
p = new a;
}
下面是第二段代码
class a
{
public:
a (int x,int y)
{
i = x;
j = y;
}
private:
int i,j;
};
void main(void)
{
a *p;
p = new a(1,2);
}
问题是:第一段代码我没有定义构造函数 主函数中声明了a类型的指针*p
然后用new函数为p分配大小为a的动态内存 没有错误
第二段代码中 我声明了一个构造函数 同样在为p分配动态内存的时候 却必须加上 1,2两个初值了 这是什么原因 ?
如果我把第二段代码中的 p = new a(1,2);改成p = new a;系统就会报错!
可是如果我仅仅是想只分配一块大小为a的空内存 而 不给他赋予初值呢??我该如何实现?还有我想知道报错的原因!谢谢!!!C++初学者 小弟感激不尽!!
求助!C++中类的构造函数与创建动态对象的问题!
第一段代码 类a中你没有些构造函数,因此,编译器会替你自动添加一个默认的构造函数: a(void){},所以你在第一段的main函数中p = new a;时,实际上调用的是这个默认的构造函数a(void){},当然不需要参数。第二段代码你自己写了构造函数,编译器就不会替你添加默认的构造函数,所以在main...
c++中什么时候会调用构造函数
一种是在建立局部对象时,CTest c; \/\/这时会自动调用构造函数 一种是用new运算符在堆上分配对象时,CTest *p=new CTest; \/\/这时也会调用构造函数
C++类问题,构造函数的概念类问题。大神可不可以解释清楚一点
一个是默认构造函数,一个是默认复制构造函数,一个默认析构函数。像上面这个类,编译器认为是这样的:class MyClass{ int value;public:MyClass(int n):value(n){} int getValue()const{return value;} MyClass(){} \/\/这是默认构造函数 MyClass(const MyClass&){} \/\/默认复制构造函数 ...
c++~ 请问在类里面构造函数必须是public吗 可以定义到private吗_百度知...
可以定义到private,但定义成private会导致此类不能直接被外部实例化,解决方法如下:1、首先拷贝构造函数是一种特殊的构造函数,函数名与类名相同,它的一个参数必须是本类型的一个引用变量,无函数类型、返回值。2、对象通过另一个对象初始化。3、运行如下图所示。4、接着输入函数的参数为类对象。5...
在c++中创建了类,但在创建新对象时,编译显示:不存在默认构造函数
在c++中,如果你没有自定义构造函数,那么系统会给你的类提供一个默认的无参数的构造函数,你现在已经自定义了一个有参数的构造函数:Stock(char[] );有两种解决办法:一:你再显式定义一个无参数的构造函数,比如 Stock::Stock(){ Symbol = "默认股票名";price = 0.0;} 二、你按照正确...
c++什么叫构造函数,它的作用是什么
c++类的构造函数详解 一、 构造函数是干什么的class Counter{public: \/\/ 类Counter的构造函数 \/\/ 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: \/\/ 数据成员 int m_value;} 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作...
C++中用new运算符创建一个类的数组指针会调用类的构造函数吗
当然会执行,不论是什么情况,只要你实例化了一个类也就是当你创建了一个对象时,就会自动调用构造函数。
C++中一个类最多几个构造函数?
C++中一个类可以有很多个构造函数,但是参数一定要不一样。编译器会自动提供两个构造函数:默认构造函数和复制构造函数。析构函数只能有一个。C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。其编程领域众广,常用于系统开发,...
c++中的构造函数和析构函数是什么时候被调用的?
构造函数:只在创建对象的时候才会调用,其他情况不允许调用。析构函数:笼统的说是销毁对象的时候进行调用。但是调用的时间不一定一样,有些时候当退出程序的时候,系统将收回分配的空间,这时就会调用析构函数;有些情况下,在程序进行过程中,使用delete 函数来销毁动态分配的对象,这时就会调用析构函数...
在c++类中,定义构造函数的目的是什么
构造函数通常用于在实例化对象时自动对内部数据成员初始化,设置初始值、分配内存空间等。而析构函数则用于删除对象时做收尾工作,比如释放申请的空间等。要创建一个对象,就得调用构造函数。要销毁一个对象,就会被迫的调用析构函数。如果成员函数声明称static,不创建对象也能调用 静态成员函数。