`
yanghuidang
  • 浏览: 987388 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C++两种方式创建对象(new和申明)

 
阅读更多

环境:VS2010

问题:

1.如何让一个类的对象只能够在堆上创建(即使用new创建,如:T *p=new T;), 而不能在栈上创建(即直接申明方式,如:T t;);

2.如何让一个类的对象只能够在栈上创建(即直接申明方式,如:T t;),而不能在堆上创建(即使用new方式,如:T *p=new T;);

解决:

1.只能使用new创建,而不能使用申明明方式,只需要把类T的析构函数设为私有即可

2.只能使用申明方式,而不能使用new新建,只需要把new和delete运算符设为私有,并重载这两个运算符

代码:(只给出头文件和主函数)

问题1:

注意:这里要写一个成员函数对new的对象进行delete

问题2:


分享到:
评论

相关推荐

    c,c++异常处理

    恢复的方式有两种: - **异常恢复**: 继续执行异常发生前的代码。 - **异常终止**: 从异常处理后的点继续执行。 ##### 1.3 C标准库异常处理体系 C标准库提供了几种处理异常的方法,这些方法同样适用于C++,只是...

    浅析C++ new的三种面貌

    C++ 中的 new 运算符是一种关键字,用于在堆上创建对象。然而,许多人对 new 的理解仅止于其基本用法,殊不知 new 还有三种不同的面貌:new operator、operator new() 和 placement new()。本文将深入探讨 C++ 中 ...

    c++面试笔试题库 附答案

    C++是一种支持面向对象编程的语言,面向对象编程的三个主要特征是封装、继承和多态。封装是指将数据和操作封装在一起,继承是指子类继承父类的属性和方法,多态是指一个实体可以有多种形态。 7. 内存管理 C++中...

    C_与C++中的异常处理.pdf

    这部分探讨了这两种异常处理方式之间的相互作用和如何在同一个程序中协调使用它们。 综上所述,异常处理是C与C++程序设计中的一个重要主题。通过深入理解异常的生命阶段、异常处理的不同方法和技术,以及如何编写...

    C与C++中的异常处理

    最后,书中讨论了如何在C++异常处理和Visual C++的结构化异常处理之间进行混合使用,这对于需要同时使用这两种异常处理机制的应用程序来说非常有用。 通过以上知识点的详述,《C与C++中的异常处理》这本书为读者...

    经典C/C++面试题目大汇总(全附答案).doc

    原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。 引用型参数应该在能被...

    C/C++笔试试题(word文档版,内附答案)

    C/C++笔试试题(word文档版,内附...(4)流操作符重载返回值申明为“引用”的作用:流操作符和>>,这两个操作符常常希望被连续使用,例如:cout ; 因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。

    C++Builder_自定义消息处理总结

    二、自定义消息处理的两种方法 ### 方法一:重写 Dispatch 函数 在 TForm1 窗体类中的 private 成员区中添加: ```cpp void __fastcall Dispatch(void * Message); ``` 然后,在 cpp 文件中实现 Dispatch 函数: `...

    c与c++中的异常处理

    - **placement new和placement delete**:介绍了一种特殊的内存管理技术,即在指定地址上构造和销毁对象,以及在这种情况下如何处理异常。 #### 六、高级主题 随着深入学习,还会接触到一些更高级的主题。 **10.从...

    c/c++笔试、面试题目

    C/C++ 笔试、面试题目大汇总 ...(4)流操作符重载返回值申明为“引用”的作用:流操作符 和 >>,这两个操作符常常希望被连续使用,例如:cout ;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。

    微软面试题集锦-C/C++试题

    "微软面试题集锦-C/C++试题" ...(4)流操作符重载返回值申明为“引用”的作用:流操作符和>>,这两个操作符常常希望被连续使用,例如:cout ;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。

     实验五 输入输出流的应用.doc

    (2)申明一个 int 类型的指针变量 “*pData”,利用 new 为该指针申请一个动态内存空间,大小为 400 字节,并将该内存块的内容初始化为 0。 (3)对 “0~99” 100 个数分别求平方,并将结果放入 pData 内,同时在...

    C/C++ 笔试、面试题目大汇总

    (4)流操作符重载返回值申明为“引用”的作用:流操作符和>>,这两个操作符常常希望被连续使用,例如:cout ;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流...

    深入了解C++ 结构体(struct)与共用体(union)

    在C++编程语言中,结构体(struct)和共用体(union)是两种基本的数据类型,它们都是从C语言继承而来的,并且C++对它们进行了扩充和改进。本文将深入了解C++ 结构体和共用体的相关资料,帮助大家更好地理解和学习...

    iOS笔试题.doc

    6. **协议(protocol)可以分为两种,其中以关键字 optional 申明的协议可以不被实现**。 - 协议是用来定义一组方法的规范,通过 `optional` 关键字标记的方法是可选的,实现方可以选择不实现这些方法。 7. **...

    java入门pdf

    - **4.2.3 创建和使用实例对象**:通过`new`关键字创建对象实例,并调用类的方法或访问属性。 - **4.2.4 方法重载**:同一类中的多个同名方法,通过不同的参数列表实现重载。 - **4.2.5 参数个数可变方法**:使用`.....

    JAVA工程师面试试题及答案模板.docx

    3. 关于constructor(构造器),正确的说法是(C):constructor在一个对象被new时执行。构造器用于初始化新创建的对象,可以有多个重载版本,但每个类至少有一个默认构造器,除非程序员自定义。 4. 提供Java存取...

    2023年c语言面试大全.doc

    引用声明完毕后,相称于目的变量名有两个名称,即该目的原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表达该引用名是目的变量名的一个别名,它自身不是一种数据...

Global site tag (gtag.js) - Google Analytics