class A
{
private:
int m_nValue;
public:
A()
{
m_nValue = 0;
}
A(int nValue)
{
m_nValue = nValue);
~A()
{}
}
现在主è¦æ˜¯å¦‚果我打电è¯
A a(2);// 2 will be assigned for m_nValue of object A.
现在,如果我想定义一个对象数组,我们该如何åšã€‚ 如果我使用operator new动æ€åˆ›å»ºå¯¹è±¡ï¼Œæˆ‘们如何åšåˆ°è¿™ä¸€ç‚¹ 喜欢
A *pA;
pA = new A[5];// while creating the object i want the parameterised constructor to be
//called
我希望问题很清楚。如果需è¦æ›´å¤šè§£é‡Šï¼Œè¯·å‘Šè¯‰æˆ‘
ç”案 0 :(得分:5)
ä½ ä¸èƒ½è¿™æ ·åšã€‚
如果è¦åŠ¨æ€åˆ†é…æ•°ç»„ï¼Œåˆ™å¿…é¡»æ˜¯é»˜è®¤æž„é€ å¯¹è±¡ã€‚è¿™æ„味ç€ï¼Œå®ƒéœ€è¦ä¸€ä¸ªæ²¡æœ‰å‚æ•°çš„æž„é€ å‡½æ•°ï¼Œè¿™æ˜¯å°†è¦ä½¿ç”¨çš„æž„é€ å‡½æ•°ã€‚
ç”案 1 :(得分:2)
 Â如果我想定义一个对象数组
这是C ++ï¼Œä½ ä¸éœ€è¦æ•°ç»„; - )
std::vector<A> v(5, A(2));
ç”案 2 :(得分:1)
ä½ é€šå¸¸ä¸èƒ½è¿™æ ·åšï¼Œå› ä¸ºæ•°ç»„å¯¹è±¡æ˜¯é»˜è®¤æž„é€ çš„ï¼Œä½†æ˜¯ä½ å¯ä»¥åˆ›å»ºä¸€ä¸ªåç±»ï¼Œå…¶é»˜è®¤æž„é€ å‡½æ•°å°†ä½ æƒ³è¦çš„å‚æ•°ä¼ é€’ç»™åŸºç±»ã€‚
template<int I>
class B : public A
{
public:
B() : A(I) { }
};
...
A *pA;
pA = new B<42>[5];
然而,在æŸäº›åœˆå里,以这ç§æ–¹å¼æ»¥ç”¨ç»§æ‰¿æƒæ˜¯ä¸å—欢迎的。
ç”案 3 :(得分:1)
如果è¦å®šä¹‰æ•°ç»„,å¯ä»¥ä½¿ç”¨èšåˆåˆå§‹å€¼è®¾å®šé¡¹
A a[5] = { 1, 2, 3, 4, 5 };
请注æ„,èšåˆåˆå§‹åŒ–éµå¾ªå¤åˆ¶åˆå§‹åŒ–è¯ä¹‰ï¼Œå› æ¤å¯¹äºŽæ¯ä¸ªå…ƒç´ ,它将ç‰åŒäºŽ
A a1 = 1;
ä¸æ˜¯åŽŸæ¥çš„
A a1(1);
对于new-expression ...ä½ å¯ä»¥åœ¨æ•°ç»„new-expressionä¸æ供的唯一åˆå§‹åŒ–器是空的()
åˆå§‹åŒ–器,它触å‘值åˆå§‹åŒ–。目å‰è¯¥è¯è¨€ä¸æ”¯æŒå…¶ä»–åˆå§‹å€¼è®¾å®šé¡¹ã€‚