初始化-关于构造函数的问题。

问题描述

关于构造函数的问题。

假如有如下代码:
class base
{
public:
base ();
}
在初始化时
base *p = new base;

base b;
的区别

解决方案

功能上没区别,都会调用构造函数base ();
如果非要找不同,有下面这些:
1、内存分配方式不同:
base *p = new base;占用堆内存,不再需要p时需要delete释放内存;
base b;占用栈内存,不需要程序员释放,会自动释放;

2、使用方式不同
p是指针,要用->访问其接口;
b用.访问其接口。

时间: 2024-08-31 01:15:53

初始化-关于构造函数的问题。的相关文章

C#小测试(一):类成员初始化与构造函数执行的顺序

看看下面这段代码,你觉得它会输出什么呢? class Foo { public Foo(string s) { Console.WriteLine("Foo constructor: {0}", s); } public void Bar(){} } class Base { readonly Foo baseFoo = new Foo("Base initializer"); public Base() { Console.WriteLine("Base

C++学习摘要之二:构造函数和析构函数

构造函数和析构函数是类的两个特殊的成员函数 1.构造函数 构造函数(constructor)是类的一个特殊的成员函数,它与类名同名.当定义该类的对象时,构造函数将被系统自动调用用以实现对该对象的初始化. 构造函数不能有返回值,因而不能指定包括void在内的任何返回值类型. 构造函数的定义与其他成员函数的定义一样可以放在类内或类外. 构造函数的定义格式为: 类名(形参说明) {函数体} 构造函数既可以定义成有参函数,也可以定义成无参函数,要根据问题的需要来定. 注意:程序中不能直接调用构造函数,构

《Effective C#》:使用成员初始化语句

为了方便内容的开展,我先说说一个对象的构造过程. 对于类型第一 个实例的构造过程大致如下: 1.分配静态成员的内存空间,此时空间存 储数据为0: 2.执行静态成员的初始化语句: 3.执行基类的静 态构造函数: 4.执行类型的静态构造函数: 5.分配成员的内存 空间,此时空间存储数据为0: 6.执行成员的初始化语句: 7. 执行相应的基类构造函数: 8.执行类型的构造函数. 那么对于 同类型的后续创建对象,前4个步骤不用执行的,直接从第5步开始. 现 在来说说为什么推荐使用成员初始化语句来初始化成

c#对象初始化顺序实例

  本文实例分析了c#对象初始化顺序.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Progr

Static变量和实例变量的初始化顺序问题

问题重现 让我们先来看一下以下的程序:  1 public class StaticInitSequence { 2     //-------------------Static fields------------------- 3     private static int staticIntVar = 10; 4     private static int staticComputeIntVar = (int)(Math.random() * 10); 5     private s

一个典型的问题,关于继承成员内部类的子类的构造函数

问题描述 一个典型的问题,关于继承成员内部类的子类的构造函数 初学JAVA,没有C币,但是希望大家能够帮忙解决一下问题: 先上代码: package Test; public class test9 { public static void main(String[] args){ Outer outer=new Outer("test"); new Extender(outer,10); } } class Outer{ public Outer(String str){} clas

【C/C++学院】(6)构造函数/析构函数/拷贝构造函数/深copy浅copy

1.构造函数     类的初始化即为构造函数.也为:隐式的初始化. 构造函数在对象初始化的时候,自动被调用.隐式的调用. 构造函数分为三种:有参构造函数.无参构造函数.拷贝构造函数. 有参构造函数调用有三种:括号法.等号法.手工法. #include <iostream> using namespace std; class Test { private: int m_a; public: Test()//无参构造函数 { } Test(const Test &obj)//拷贝构造函数

关于初始化的问题,求解答

问题描述 关于初始化的问题,求解答 1:int a=10; 2: int a; a=10; 上面两个都是初始化吗? 初始化是对变量第一次赋值就叫初始化,还是说在定义变量的同时赋值才叫初始化? 求解答 解决方案 两段代码产生的机器码是一样的,它们等价. 在C语言中, int a;就已经分配了空间 a = 1;这个赋了一个值 很多书上说叫做"赋初值",其实对于非常数,编译器不管什么初不初的. int a = 1;就是把这两步在一句话中写完了. 解决方案二: 初始化和变量声明是明显有区别的,

javascript构造函数的使用方法

在网页特效中,使用new运算符或者预定义的构造函数(如 Object(),Date(),Function()等)都可以创建并初始化一个新的js 对象. 构造函数具有如下两个特性,其本质仍然是javascript函数: 它由new运算符调用 传递给它的是一个对新创建的空对象的引用,将该引用作为关键字 this的值,而且它还要对新创建的对象进行适当的初始化   //定义构造函数,   function User(name,age)   {      this.name = name;      th